PROCEDURE GotoXY (X_pos, Y_pos : Integer) ;

  { Procedure to position cursor at co-ordinates X,Y for Micro-Term ACT-IV;
      duplicates functions of "GotoXY" in Pascal/M & UCSD.
    Change to proper control codes for your terminal, if necessary.
    Note that to avoid actually printing characters on the screen, the
      numbers are made negative before sending the "character" to the terminal;
      i.e., the range of "X_pos" is actually -128 to -47, rather than 0 to 80,
      and for "Y_pos", -128 to -105, rather than 0 to 23. It's not clear
      whether this is a peculiarity required by Pascal/Z or by the ACT-IV,
      so different strategies may be necessary for different terminals.       }

  CONST
    Offset = 128 ;  { Used to reduce X and Y numbers to ranges shown above }

BEGIN { GotoXY }

  Write (Chr (20)) ; { Signals ACT-IV that position co-ordinates follow }

  Write (Chr (Y_pos - Offset)) ; { Send row number first,... }

  Write (Chr (X_Pos - Offset)) ; { ...then column number }

END { GotoXY } ;
 - Offset)) ; { Send row number first,... }

  Write (Chr (X_Pos - Offset)) ; { ...then column numd.		      }

BEGIN { Ucase }

  IF Ord (Letter) IN [Ord ('a')..Ord ('z')] THEN
    Ucase := Chr (Ord (Letter) - Ord ('a') +